#ifndef __STATE_H__
#define __STATE_H__

class Context;
class State
{
public:
    State() = default;
    virtual ~State() = default;

    virtual void Handle(Context *ctx){}

protected:
    void ChangeState(Context *ctx, State *st);
};

class StateIdle : public State
{
public:
    StateIdle() = default;
    ~StateIdle() = default;

    void Handle(Context *ctx);
};

class StateRun : public State
{
public:
    StateRun() = default;
    ~StateRun() = default;

    void Handle(Context *ctx);
};

#endif

